package com.lou1052.core.base.annotation.thread.concurrent;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;



/**
 * 
* 
* 项目名称：faith 
* 类名称：ConditionRace条件约束
* 类描述： 竞态条件 在并发编程中,由于不恰当的不可预测的执行时序而出现不正确的结果
* 类说明 : 多线程同时对同一状态成员变量进行操作 ,破坏了状态变量的原子性 
* 设计说明:每个方法最好设计成有一个竞态条件 有多个竞态条件的话应该拆分成多个方法 并且竞态边界要区分明确 最好上下边界是方法的开始和结束.
* 示例 :单状态 先检查后执行 if(i=0){i=2} ; 递增操作 i++; 对状态的操作依赖原始值.
* 		  多状态  复合操作 多个成员变量
* 创建人：liuqing 
* 创建时间：2012-6-11 下午1:46:45 
* 修改人：liuqing 
* 修改时间：2012-6-11 下午1:46:45 
* 修改备注： 
* @version 
*
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
@Documented
public @interface ConditionRace {
	/**
	 * 
	* @Title: type
	* @Description: 竞态类型
	* @param @return    设定文件
	* @return RaceType    返回类型
	* @throws
	 */
	RaceType type();
	
	/**
	 * 
	* @Title: group
	* @Description: 参与者
	* @param @return    设定文件
	* @return String[]    返回类型
	* @throws
	 */
	String[] group();
	
	
	/**
	 * 
	* @Title: method
	* @Description: 涉及的方法
	* @param @return    设定文件
	* @return String    返回类型
	* @throws
	 */
	String method();
	
	/**
	 * 
	* @Title: name
	* @Description:标示名称 LockStrategy 使用
	* @param @return    设定文件
	* @return String    返回类型
	* @throws
	 */
	String name();

}
